<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>发布订阅模式</title>
</head>
<body>
<script>
    var Event={
        //通过on接口监听事件EventName
        //通过触发，执行callback
        on:function(eventName,callback){
            //console.log('开始事件了o');
            if(!this.handles){
                this.handles={};
            }
            if(!this.handles[eventName]){
                this.handles[eventName]=[];
            }
            this.handles[eventName].push(callback);
        },
        //触发事件
        emit:function(eventName){
            //console.log('触发事件了啊');
            if(this.handles[arguments[0]]){
                for(var i=0;i<this.handles[arguments[0]].length;i++){
                    this.handles[arguments[0]][i](arguments[1]);
                }
            }
        }
    };
    var person1={};
    var person2={};
    Object.assign(person1,Event);
    Object.assign(person2,Event);
    person1.on('call1', function () {
        console.log('person1');
    });
    person2.on('call2', function () {
        console.log('person2');
    });
    person1.emit('call1'); // 输出 'person1'
    person1.emit('call2'); // 没有输出
    person2.emit('call1'); // 没有输出
    person2.emit('call2'); // 输出 'person2'

</script>
</body>
</html>